WindowManagerService创建窗口测试
通过WindowManagerService我们可以直接申请、渲染并注销自己的窗口,而不需要经过Activity,Dialog等系统组件,通过本测试,我们可以清楚WMS最基本的工作方式。以下代码基于Android4.4
创建一个SampleWindow类
1 | package test.wms.samplewindow; |
创建Android.mk文件
1 | # Copyright 2012 The Android Open Source Project |
创建编译目录
将Android.mk和SampleWindow.java文件放在frameworks\base\cmds\samplewindow目录下,最终的结构如下:
frameworks\base\cmds\samplewindow\src\test\wms\samplewindow\SampleWindow.java
frameworks\base\cmds\samplewindow\Android.mk
编译模块
cd到Android源码目录中执行:
1 | . /build/envsetup.sh |
经过编译后的模块最终会在out\target\product\system目录下生成samplewindow.jar文件,将该文件拷贝出来
将jar文件转换为dex文件
由于jar文件不能再Android系统中直接运行,需要转换为dex文件,所以我们需要通过sdk工具dx来进行转换,dx脚本在
sdk/build-tools/目录下,执行dx --dex --output=samplewindow.dex samplewindow.jar生成dex文件
执行dex文件
通过app_process 命令来执行dex文件,命令如下
1 | app_process -Djava.class.path=/data/local/tmp/samplewindow.dex /system/bin test.wms.samplewindow.SampleWindow |
执行完成后手机屏幕就会显示我们创建的窗口,根据我们的设置,当在窗口触摸手指离开后退出窗口。
参考
深入理解WindowManagerService
https://blog.csdn.net/innost/article/details/47660193